package com.dongnao.barry.ls38_rxjavaopertor;

/**
 * Created by Administrator on 2018/5/28.
 */

public class AppTest {
    public void main() {
//        Number number=Point.getNumber();
//        Point point = new Point();
//        List<? super Fruit> list = new ArrayList<>();
//        Object f = list.get(2);
//        //?  extends  只能取不能写
//        //? super Fruit  只能写 不能读  ==(只能读出Object)
////        编译器只要能确定通配符类型，会允就许，如果无法确定通配符的类型，就会报错。
//        list.add(new Banana());//异常

// list <Banana>             能存 Fruit  蔬菜 黄瓜
//写又要读  不能同时存在


    }

    //?  extends  只能取不能写
    //? super Fruit  只能写 不能读  ==(只能读出Object)
//        super   位置            只是参数传递
//        extends              返回值

    public void main2(List<? super Person> dest, List<? extends Person> src) {
            dest.add(new Person<Object>());
        Person p = src.get();
    }

    class Person<T> {
        T  t;
    }

    class List<T>{
//
        public  void add(Person<? super     T> person){
        }

        public  Person<?  extends    T> get( ){
            return null;
        }
    }

    //		食物
    class Food {
    }

    //		水果
    class Fruit extends Food {
    }

    //		香蕉
    class Banana extends Fruit {
    }
}
